package Merlion.util.state;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class CreditProfileState implements Serializable {

    private Long creditProfileId;
    private Long customerId;
    private String customerGrade; //default as C
    private List<String> methodOfPayment; //cash,GIRO,creditcard
    
    //for bank
    private String bankName;
    private String accountNumber;
    
    //for creditCard
    private String creditCardType; //visa,amex,mastercard
    private String creditCardNumber;
    private Double creditLimit;
    private Double creditBalance;
    private Double balancePayable;
    private Double paymentAsCIA; //paymentRecord for Cash-In-Advance
    private String creditProfileStatus; //valid,frozen
    private String deleteFlag; //Y,N
    private int defaults;

    public CreditProfileState(Long creditProfileId, Long customerId, Double creditLimit, Double creditBalance, Double balancePayable, Double paymentAsCIA, String customerGrade, String creditProfileStatus, String deleteFlag, List<String> methodOfPayment, String bankName, String accountNumber, String creditCardType, String creditCardNumber, int defaults) {
        this.setCreditProfileId(creditProfileId);
        this.setCustomerId(customerId);
        this.setCustomerGrade(customerGrade);

        List<String> method = new ArrayList<String>();
        for (String mop : methodOfPayment) {
            method.add(mop);
        }
        this.setMethodOfPayment(method);

        this.setBankName(bankName);
        this.setAccountNumber(accountNumber);
        this.setCreditCardType(creditCardType);
        this.setCreditCardNumber(creditCardNumber);
        this.setCreditLimit(creditLimit);
        this.setCreditBalance(creditBalance);
        this.setBalancePayable(balancePayable);
        this.setPaymentAsCIA(paymentAsCIA);
        this.setCreditProfileStatus(creditProfileStatus);
        this.setDeleteFlag(deleteFlag);
        this.setDefaults(defaults);
    }

    public Long getCreditProfileId() {
        return creditProfileId;
    }

    public void setCreditProfileId(Long creditProfileId) {
        this.creditProfileId = creditProfileId;
    }

    public Long getCustomerId() {
        return customerId;
    }

    public void setCustomerId(Long customerId) {
        this.customerId = customerId;
    }

    public String getCustomerGrade() {
        return customerGrade;
    }

    public void setCustomerGrade(String customerGrade) {
        this.customerGrade = customerGrade;
    }

    public List<String> getMethodOfPayment() {
        return methodOfPayment;
    }

    public void setMethodOfPayment(List<String> methodOfPayment) {
        this.methodOfPayment = methodOfPayment;
    }

    public String getBankName() {
        return bankName;
    }

    public void setBankName(String bankName) {
        this.bankName = bankName;
    }

    public String getAccountNumber() {
        return accountNumber;
    }

    public void setAccountNumber(String accountNumber) {
        this.accountNumber = accountNumber;
    }

    public String getCreditCardType() {
        return creditCardType;
    }

    public void setCreditCardType(String creditCardType) {
        this.creditCardType = creditCardType;
    }

    public String getCreditCardNumber() {
        return creditCardNumber;
    }

    public void setCreditCardNumber(String creditCardNumber) {
        this.creditCardNumber = creditCardNumber;
    }

    public Double getCreditLimit() {
        return creditLimit;
    }

    public void setCreditLimit(Double creditLimit) {
        this.creditLimit = creditLimit;
    }

    public Double getCreditBalance() {
        return creditBalance;
    }

    public void setCreditBalance(Double creditBalance) {
        this.creditBalance = creditBalance;
    }

    public Double getBalancePayable() {
        return balancePayable;
    }

    public void setBalancePayable(Double balancePayable) {
        this.balancePayable = balancePayable;
    }

    public Double getPaymentAsCIA() {
        return paymentAsCIA;
    }

    public void setPaymentAsCIA(Double paymentAsCIA) {
        this.paymentAsCIA = paymentAsCIA;
    }

    public String getCreditProfileStatus() {
        return creditProfileStatus;
    }

    public void setCreditProfileStatus(String creditProfileStatus) {
        this.creditProfileStatus = creditProfileStatus;
    }

    public String getDeleteFlag() {
        return deleteFlag;
    }

    public void setDeleteFlag(String deleteFlag) {
        this.deleteFlag = deleteFlag;
    }

    public int getDefaults() {
        return defaults;
    }

    public void setDefaults(int defaults) {
        this.defaults = defaults;
    }
}
